package com.skh.array;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

/**
 * 复写零
 */
public class DuplicateZeros {
    /**
     * 给你一个长度固定的整数数组 arr，请你将该数组中出现的每个零都复写一遍，并将其余的元素向右平移。
     * <p>
     * 注意：请不要在超过该数组长度的位置写入元素。
     * <p>
     * 要求：请对输入的数组 就地 进行上述修改，不要从函数返回任何东西。
     * <p>
     *  
     * <p>
     * 示例 1：
     * <p>
     * 输入：[1,0,2,3,0,4,5,0]
     * 输出：null
     * 解释：调用函数后，输入的数组将被修改为：[1,0,0,2,3,0,0,4]
     * 示例 2：
     * <p>
     * 输入：[1,2,3]
     * 输出：null
     * 解释：调用函数后，输入的数组将被修改为：[1,2,3]
     */

    public static void duplicateZeros(int[] arr) {

        List<Integer> list = new ArrayList<>();
        int size = arr.length;
        for (int i = 0; i < arr.length; i++) {
            if (arr[i] == 0) {
                list.add(0);
                if (list.size() == size) {
                    break;
                }
            }
            list.add(arr[i]);
            if (list.size() == size) {
                break;
            }
        }

        for (int i = 0; i < arr.length; i++) {
            arr[i] = list.get(i);
        }
        System.out.println(Arrays.toString(arr));
    }

    public static void main(String[] args) {
        int[] arr = {1,0,2,3,0,4,5,0};
        DuplicateZeros.duplicateZeros(arr);

    }

}
